import HTTP from '../util/http.js';
const app = getApp();
export default class ClassicModel extends HTTP {
  // 获取最新一期的期刊
  getLatest(sCallback) {
    this.request({
      url: app.globalData.url.classic.latest,
      success: (data) => {
        sCallback(data);
        // 将最新一期期刊的索引和信息都存入缓存中
        this._setLastestIndex(data.index);
        let key = this._getKey(data.index);
        wx.setStorageSync(key, data);
      }
    })
  }

  // 获取我喜欢的所有的期刊
  getMyFavor(success) {
    this.request({
      url: app.globalData.url.classic.favor,
      success: success
    })
  }

  // 先在缓存中查找对应的期刊，找不到就发起请求，再存入缓存中。
  getClassic(index, nextOrPrevious ,sCallback) {
    let key = nextOrPrevious=='next' ? this._getKey(index+1) : this._getKey(index-1);
    let classic = wx.getStorageSync(key);
    if (!classic) {   // 如果缓存中没有对应期刊，则服务器发起请求
      let turnType = nextOrPrevious=='next' ? app.globalData.url.classic.next : app.globalData.url.classic.previous ;
      let url = app.globalData.url.classic.classicBase + index + turnType;
      this.request({
        url,
        success: (data) => {
          wx.setStorageSync(this._getKey(data.index) ,data);
          sCallback(data);
        }
      })
    } else {    // 如果在缓存中找到，则返回给实例对象。
      sCallback(classic)
    }
    
  }

  // 当前期刊是否为第1期的期刊
  isFirst(index) {
    return index==1 ? true : false;
  }

  // 当前期刊是否为最新一期的期刊
  isLastest(index) {
    let latest = this._getLastestIndex();
    return index==latest ? true : false;
  }

  // 将最新一期的期刊存入缓存
  _setLastestIndex(index) {
    wx.setStorageSync('latest', index);
  }

  // 在缓存中获取最新一期的期刊
  _getLastestIndex() {
    let index = wx.getStorageSync('latest');
    return index;
  }

  // 根据index，获取那一期的期刊
  _getKey(index) {
    let key = "classic-" + index;
    return key;
  }
} 
